using System;

namespace Adoor.Domain.Tiers
{
    /// <summary>
    /// Summary description for Personne.
    /// </summary>
    public abstract class Personne
    {

        /// <summary>
        /// Called when user is creating a new entity.
        /// </summary>
        protected virtual void OnCreate(object[] args)
        {
            this.ExternalBdd = false;
            this.Origine = String.Empty;
            this.Cadre = true;
            this.Civilite = String.Empty;
            this.CodeEmploi = String.Empty;
            this.ComplementPrenom = String.Empty;
            this.LibelleEmploi = String.Empty;
            this.MatriculeDjo = String.Empty;
            this.MatriculeInterneDjo = String.Empty;
            this.MatriculePension = String.Empty;
            this.MatriculeSacijo = String.Empty;
            this.MiseSousTutelle = false;
            this.Nationnalite = String.Empty;
            this.NoInsee = String.Empty;
            this.Nom = String.Empty;
            this.NomDeJeuneFille = String.Empty;
            this.Prenom = String.Empty;

            this.DateCadre = new DateTime(1800, 1, 1);
            this.DateNaissance = new DateTime(1800, 1, 1);
            this.DateDeces = new DateTime(1800, 1, 1);
        }

        /// <summary>
        /// Called when user is retreiving an entity from storage
        /// </summary>
        protected virtual void OnMaterialize()
        {

        }

        public virtual String Origine
        {
            get
            {
                return this.m_origine;
            }
            set
            {
                this.m_origine = value;
            }
        }

        //public virtual bool ExternalBdd
        //{
        //    get { return this.m_ExternalDataBase; }
        //    set { this.m_ExternalDataBase = value; }
        //}

        public virtual String MatriculeSacijo
        {
            get
            {
                return this.m_matriculeSacijo;
            }
            set
            {
                this.m_matriculeSacijo = value;
            }
        }

        public virtual String MatriculeDjo
        {
            get
            {
                return this.m_matriculeDjo;
            }
            set
            {
                this.m_matriculeDjo = value;
            }
        }

        public virtual String MatriculeInterneDjo
        {
            get
            {
                return this.m_matriculeInterneDjo;
            }
            set
            {
                this.m_matriculeInterneDjo = value;
            }
        }

        public virtual String MatriculePension
        {
            get
            {
                return this.m_matriculePension;
            }
            set
            {
                this.m_matriculePension = value;
            }
        }

        public virtual String NoInsee
        {
            get
            {

                return this.m_noinsee;
            }
            set
            {

                this.m_noinsee = value;
            }
        }

        public virtual String Civilite
        {
            get
            {

                return this.m_civilite;
            }
            set
            {

                this.m_civilite = value;
            }
        }

        public virtual String Nom
        {
            get
            {

                return this.m_nom;
            }
            set
            {

                this.m_nom = value;
            }
        }

        public virtual String NomDeJeuneFille
        {
            get
            {

                return this.m_nomdejeunefille;
            }
            set
            {

                this.m_nomdejeunefille = value;
            }
        }

        public virtual String Prenom
        {
            get
            {

                return this.m_prenom;
            }
            set
            {

                this.m_prenom = value;
            }
        }

        public virtual String ComplementPrenom
        {
            get
            {

                return this.m_complementprenom;
            }
            set
            {

                this.m_complementprenom = value;
            }
        }

        public virtual Adresse Adresse
        {
            get
            {

                return this.m_adresse;
            }
            set
            {

                this.m_adresse = value;
            }
        }

        public virtual Adresse AdresseNaissance
        {
            get
            {

                return this.m_adressenaissance;
            }
            set
            {

                this.m_adressenaissance = value;
            }
        }

        public virtual Adresse AdresseDeces
        {
            get
            {

                return this.m_adressedeces;
            }
            set
            {

                this.m_adressedeces = value;
            }
        }

        public virtual Adresse AdresseSuccession
        {
            get
            {

                return this.m_adressesuccession;
            }
            set
            {

                this.m_adressesuccession = value;
            }
        }

        public virtual String Nationnalite
        {
            get
            {

                return this.m_nationnalite;
            }
            set
            {
                this.m_nationnalite = value;
            }
        }


        public virtual String CodeEmploi
        {
            get
            {

                return this.m_codeemploi;
            }
            set
            {

                this.m_codeemploi = value;
            }
        }


        public virtual String LibelleEmploi
        {
            get
            {

                return this.m_libelleemploi;
            }
            set
            {
                this.m_libelleemploi = value;
            }
        }




        public virtual Coordonnee Coordonnee
        {
            get
            {
                Coordonnee result = this.m_coordonnee;
                result.ExternalBdd = ExternalBdd;
                return result;
            }
            set
            {
                if (value != null)
                    value.ExternalBdd = ExternalBdd;
                this.m_coordonnee = value;
            }
        }


        public virtual Coordonnee CoordonneeSuccession
        {
            get
            {
                return this.m_coordonneeSuccession;
            }
            set
            {
                this.m_coordonneeSuccession = value;
            }
        }



        public virtual System.DateTime DateNaissance
        {
            get
            {

                return this.m_datenaissance;
            }
            set
            {

                this.m_datenaissance = value;
            }
        }

        public virtual System.DateTime DateDeces
        {
            get
            {

                return this.m_datedeces;
            }
            set
            {

                this.m_datedeces = value;
            }
        }


        public virtual System.Boolean Cadre
        {
            get
            {

                return this.m_cadre;
            }
            set
            {

                this.m_cadre = value;
            }
        }

        public virtual System.DateTime DateCadre
        {
            get
            {

                return this.m_datecadre;
            }
            set
            {

                this.m_datecadre = value;
            }
        }




        public virtual System.Boolean MiseSousTutelle
        {
            get
            {
                return this.m_misesoustutelle;
            }
            set
            {
                this.m_misesoustutelle = value;
            }
        }



        public virtual Tuteur Tuteur
        {
            get
            {
                return this.m_tuteur;
            }
            set
            {
                this.m_tuteur = value;
            }
        }


        public virtual System.Boolean ExternalBdd
        {
            get
            {
                return this.m_externalBdd;
            }
            set
            {
                this.m_externalBdd = value;
            }
        }

        public virtual StatusInvalidite StatusInvalidite
        {
            get
            {
                return this.m_StatusInvalidite;
            }
            set
            {
                this.m_StatusInvalidite = value;
            }
        }



        protected abstract System.String m_origine { get; set; }
        protected abstract System.String m_matriculeSacijo { get; set; }
        protected abstract System.String m_matriculeDjo { get; set; }
        protected abstract System.String m_matriculeInterneDjo { get; set; }
        protected abstract System.String m_matriculePension { get; set; }
        protected abstract System.String m_noinsee { get; set; }
        protected abstract System.String m_civilite { get; set; }
        protected abstract System.String m_nom { get; set; }
        protected abstract System.String m_nomdejeunefille { get; set; }
        protected abstract System.String m_prenom { get; set; }
        protected abstract System.String m_complementprenom { get; set; }
        protected abstract Adresse m_adresse { get; set; }
        protected abstract Adresse m_adressenaissance { get; set; }
        protected abstract System.String m_nationnalite { get; set; }
        protected abstract System.String m_codeemploi { get; set; }
        protected abstract System.String m_libelleemploi { get; set; }
        protected abstract Coordonnee m_coordonnee { get; set; }
        protected abstract System.DateTime m_datenaissance { get; set; }
        protected abstract System.DateTime m_datedeces { get; set; }
        protected abstract System.Boolean m_cadre { get; set; }
        protected abstract System.DateTime m_datecadre { get; set; }
        protected abstract Adresse m_adressedeces { get; set; }
        protected abstract Adresse m_adressesuccession { get; set; }
        protected abstract System.Boolean m_misesoustutelle { get; set; }
        protected abstract Tuteur m_tuteur { get; set; }
        protected abstract System.Boolean m_externalBdd { get; set; }
        protected abstract StatusInvalidite m_StatusInvalidite { get; set; }
        protected abstract Coordonnee m_coordonneeSuccession { get; set; }



    }
}
